1. Field of the Invention
The present invention relates to storage systems, and more particularly, to managing storage area networks.
2. Background of the Invention
Storage area networks (“SAN”) are commonly used to store and access data. SAN is a high-speed sub-network of shared storage devices, for example, disks and tape drives. A computer system (may also be referred to as a “host”) can access data stored in the SAN.
Host systems typically include several functional components. These components may include a central processing unit (CPU), main memory, input/output (“I/O”) devices, and streaming storage devices (for example, tape drives). In conventional systems, the main memory is coupled to the CPU via a system bus or a local memory bus. The main memory is used to provide the CPU access to data and/or program information that is stored in main memory at execution time. Typically, the main memory is composed of random access memory (RAM) circuits.
Typical SAN architecture makes storage devices available to all servers that are connected using a computer network, for example, a local area network or a wide area network. The term server in this context means any computing system or device coupled to a network that manages network resources. For example, a file server is a computer and storage device dedicated to storing files. Any user on the network can store files on the server. A print server is a computer that manages one or more printers, and a network server is a computer that manages network traffic. A database server is a computing system that processes database queries.
Host systems often communicate with storage systems via a host bus adapter (“HBA”, may also be referred to as a “controller” and/or “adapter”) using an interface, for example, the “PCI” bus interface. PCI stands for Peripheral Component Interconnect, a local bus standard that was developed by Intel Corporation®. The PCI standard is incorporated herein by reference in its entirety.
PCI-Express is another Input/Output (“I/O”) bus standard (incorporated herein by reference in its entirety) that is compatible with existing PCI cards using the PCI bus. PCI-Express uses discrete logical layers to process inbound and outbound information.
Various other standard interfaces are also used to move data between host systems and storage devices. Fibre channel is one such standard. Fibre channel (incorporated herein by reference in its entirety) is an American National Standard Institute (ANSI) set of standards, which provides a serial transmission protocol for storage and network protocols such as HIPPI, SCSI, IP, ATM and others.
The iSCSI standard (incorporated herein by reference in its entirety) is another standard used in SANs. iSCSI is based on Small Computer Systems Interface (“SCSI”), which enables host computer systems to perform block data input/output (“I/O”) operations with a variety of peripheral devices including disk and tape devices, optical storage devices, as well as printers and scanners.
A traditional SCSI connection between a host system and peripheral device is through parallel cabling and is limited by distance and device support constraints. For storage applications, iSCSI was developed to take advantage of network architectures based on Fibre Channel and Gigabit Ethernet standards. iSCSI leverages the SCSI protocol over established networked infrastructures and defines the means for enabling block storage applications over TCP/IP networks. iSCSI defines mapping of the SCSI protocol with TCP/IP.
The iSCSI architecture is based on a client/server model. Typically, the client is a host system such as a file server that issues a read or write command. The server may be a disk array that responds to the client request. Devices that request I/O processes are called initiators. Targets are devices that perform operations requested by initiators. Each target can accommodate up to a certain number of devices (for example, 8), known as logical units, and each is assigned a Logical Unit Number (LUN).
The term LUN as used throughout this specification means a logical unit number on a Parallel SCSI or Fiber Channel or iSCSI target. LUN is typically a unique identifier used on a SCSI bus to distinguish between devices that share the same bus. SCSI is a parallel interface that allows up to 16 devices to be connected along a single cable. The cable and the host adapter form the SCSI bus, and this operates independently of the rest of the computer. Each device is given a unique address by the SCSI basic input and output system (“BIOS”). Commands that are sent to a SCSI controller identify devices based on their LUNs.
To ensure that data in a SAN is available at all times, a multi-path input output (“MPIO”) architecture is now being proposed. This architecture is intended to provide storage vendors (for example, HBA vendors) more than one path to read/write to/from a storage device.
The MPIO architecture allows HBA vendors to develop a device specific module (“DSM”) to operate with the modules/drivers of the MPIO architecture. This is intended to provide fault tolerance against a single point of failure in hardware components as well as mechanism for load balancing. Typically, an application running on a host server or a computing system that is connected to a server is used to manage various SAN components.
Microsoft Corporation® has proposed a MPIO architecture that includes a MPIO driver. The MPIO driver uses a logical disk device object to represent an actual physical disk device object that interfaces with the physical LUN. If the Windows Plug and Play manager removes the disk drive object (for example, due to a cable unplug), the operation is detected and a new path to the disk drive is selected.
The current MPIO architecture has shortcomings. For example, when a server is being booted and a LUN is being created, the Windows Plug and Play Manager first creates a physical device object for a LUN and during the tail end of the boot process, when a Windows Administrator is logging, the same physical object is removed and then re-created.
Both MPIO and DSM depend on the Windows Plug and Play manager for notification of creation and removal of LUN device objects. Hence, when the LUN is created, MPIO notifies DSM that an object is created. The DSM then creates a path to the object. When the object is removed, DSM performs a failover and the path is removed.
The create/remove/create operations result in unnecessary failover and “fail back” operations for newly created LUNs. This results in inefficiencies and delay.
Therefore, there is a need for a method and system that efficiently performs the boot process.